In [1]:
using ViscousFlow
In [2]:
using Plots
pyplot()
clibrary(:colorbrewer)
default(grid = false)
In [3]:
i = 5; j = 5;
In [4]:
nx = 12; ny = 12;
In [5]:
w = Nodes(Dual,(5,4))
w .= reshape(1:20,5,4)
w∘w
C = Curl()
D = Divergence()
D*(C*w)
Out[5]:
Nodes{Primal,5,4} data
Printing in grid orientation (lower left is (1,1))
3×4 Array{Float64,2}:
0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0
In [6]:
w = Nodes(Dual,(12,12));
w[4,4] = 1.0;
q = Edges(Primal,w)
curl!(q,w)
Out[6]:
Edges{Primal,12,12} data
u (in grid orientation)
11×12 Array{Float64,2}:
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 -1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
v (in grid orientation)
12×11 Array{Float64,2}:
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 -1.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
In [7]:
q = Edges(Dual,(8,6));
p = deepcopy(q);
q.u[3,2] = 0.3;
p.u[3,2] = 0.2;
p∘q
Out[7]:
Edges{Dual,8,6} data
u (in grid orientation)
6×7 Array{Float64,2}:
0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.06 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0
v (in grid orientation)
5×8 Array{Float64,2}:
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
In [8]:
q = Edges{Dual, 5, 4}()
q.u .= reshape(1:16, 4, 4)
q.v .= reshape(1:15, 5, 3)
v = Edges{Primal, 5, 4}()
Fields.cellshift!(v,q)
v.v
Out[8]:
4×4 Array{Float64,2}:
0.0 4.0 9.0 0.0
0.0 5.0 10.0 0.0
0.0 6.0 11.0 0.0
0.0 7.0 12.0 0.0
In [9]:
nx = 100; ny = 100;
i = 40; j = 50;
w = Nodes(Dual,(nx,ny))
w[i,j] = 1.0
E = plan_intfact(5,w)
E25 = plan_intfact(2.5,w)
Out[9]:
Integrating factor with parameter 2.5 on a (nx = 100, ny = 100) grid
In [10]:
E25*(E25*w)≈E*w
Out[10]:
true
In [11]:
plot(E*w)
Out[11]:
In [12]:
cellzero = Nodes(Dual,(nx,ny))
nodezero = Nodes(Primal,cellzero)
facezero = Edges(Primal,cellzero)
dualfacezero = Edges(Dual,cellzero)
cellunit = deepcopy(cellzero)
cellunit[i,j] = 1.0
Out[12]:
1.0
In [13]:
w = Nodes(Dual,(50,10));
w[20,5] = 1.0
L = plan_laplacian(w,with_inverse=true)
plot(L\w)
Out[13]:
In [14]:
E = plan_intfact(1.0,(nx,ny))
Out[14]:
Integrating factor with parameter 1.0 on a (nx = 100, ny = 100) grid
In [15]:
E! = plan_intfact!(1.0,(nx,ny))
Out[15]:
In-place integrating factor with parameter 1.0 on a (nx = 100, ny = 100) grid
In [16]:
w = deepcopy(cellunit)
Out[16]:
Nodes{Dual,100,100} data
Printing in grid orientation (lower left is (1,1))
100×100 Array{Float64,2}:
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 … 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 … 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 … 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
⋮ ⋮ ⋱ ⋮
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 … 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 … 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
In [17]:
plot(E!*w)
Out[17]:
In [18]:
C = Curl()
C*w
Out[18]:
Edges{Primal,100,100} data
u (in grid orientation)
99×100 Array{Float64,2}:
-3.0122e-19 -5.5219e-19 -7.38432e-19 … -9.08481e-19 -7.74153e-19
-1.3216e-19 -3.60951e-19 -2.84511e-19 9.27492e-20 2.05123e-19
-3.13136e-19 -4.43889e-19 -4.78265e-19 -1.26123e-19 -1.85637e-19
8.73687e-19 1.0827e-18 9.3333e-19 -4.56963e-19 -2.01649e-19
2.72557e-19 7.23487e-20 -2.14927e-20 -1.86806e-19 -1.63471e-19
-7.08627e-19 -4.87072e-19 -2.60778e-19 … 7.65729e-19 2.53182e-19
4.45052e-20 -2.2228e-19 -3.68458e-19 2.25961e-19 1.72538e-19
-2.29989e-19 2.73052e-19 6.79699e-19 -1.21087e-19 7.16193e-20
-4.46721e-19 -3.56838e-19 -3.96994e-19 -1.05428e-19 -7.55155e-20
9.28527e-19 1.03987e-18 8.05495e-19 -7.2181e-19 -9.77507e-19
-1.61503e-19 -5.4288e-19 -6.15598e-19 … 2.09258e-19 -1.19416e-19
-1.92234e-19 2.0466e-19 6.06733e-19 -5.3025e-19 -1.6516e-19
3.71515e-19 -9.33212e-20 -5.53559e-19 6.04221e-19 8.89914e-19
⋮ ⋱
4.44506e-19 3.92422e-19 1.32853e-19 6.72619e-19 6.8552e-19
-1.3908e-19 -4.41051e-19 -3.61564e-19 4.58526e-19 4.50868e-19
-1.22881e-18 -8.32356e-19 -2.43482e-19 -1.53362e-18 -1.0537e-18
1.26599e-19 1.30176e-19 -1.03324e-19 … -3.34162e-19 -4.77939e-19
5.33011e-20 -2.01749e-19 -4.09832e-19 1.12183e-18 9.77583e-19
-7.47411e-20 -2.6843e-19 -5.44762e-19 -6.34e-19 -7.76858e-19
-7.76012e-20 3.93243e-19 8.00466e-19 5.72423e-19 6.35138e-19
2.09533e-19 1.24292e-19 5.91059e-20 2.6871e-20 -1.3954e-19
-5.54027e-19 -5.02457e-19 -4.41086e-19 … -2.29884e-20 3.97811e-19
4.61732e-19 1.63029e-19 -1.14531e-19 -2.99258e-19 -1.73245e-19
2.09916e-19 4.14243e-19 5.32771e-19 6.58183e-19 3.88019e-19
1.83917e-19 5.20556e-21 -1.33577e-20 -1.07267e-18 -1.05865e-18
v (in grid orientation)
100×99 Array{Float64,2}:
4.71214e-19 1.59972e-19 9.04245e-20 … 2.45881e-19 -1.51533e-19
2.20244e-19 -2.62696e-20 1.33947e-19 1.6035e-19 -1.72054e-20
-8.54735e-21 5.0171e-20 3.37461e-19 9.59522e-20 9.51688e-20
-1.39301e-19 1.57946e-20 4.36933e-19 1.13002e-20 3.56556e-20
6.97146e-20 -1.33578e-19 9.73056e-20 3.50739e-19 2.90969e-19
-1.30494e-19 -2.27419e-19 -4.27357e-21 … 1.6735e-19 3.14304e-19
9.10603e-20 -1.12444e-21 2.90202e-19 5.61437e-20 -1.98243e-19
-1.75725e-19 -1.47303e-19 1.9842e-19 9.71725e-20 -2.51666e-19
3.27316e-19 2.59344e-19 1.62813e-19 -1.49936e-20 -5.89595e-20
4.17199e-19 2.19188e-19 4.29198e-20 1.8813e-19 -2.90473e-20
5.28542e-19 -1.51874e-20 -2.52288e-19 … -6.53297e-20 -2.84745e-19
1.47165e-19 -8.79054e-20 -1.47458e-19 -7.25865e-19 -6.13419e-19
5.44059e-19 3.14167e-19 6.05103e-20 -1.61196e-19 -2.48329e-19
⋮ ⋱
9.07175e-20 -1.07926e-19 -3.17948e-19 -1.90083e-19 -1.64693e-19
-2.11254e-19 -2.84385e-20 -1.83217e-19 -2.40294e-19 -1.7235e-19
1.85204e-19 5.60436e-19 5.79614e-19 … -1.84866e-19 3.07569e-19
1.8878e-19 3.26936e-19 2.7007e-19 -4.72567e-19 1.63792e-19
-6.62703e-20 1.18854e-19 3.00223e-19 4.17412e-20 1.95467e-20
-2.5996e-19 -1.57478e-19 1.35164e-19 2.90263e-21 -1.23311e-19
2.10885e-19 2.49744e-19 1.69445e-19 -9.95399e-20 -6.05961e-20
1.25644e-19 1.84558e-19 1.24942e-19 … -1.23489e-19 -2.27007e-19
1.77215e-19 2.45928e-19 2.05158e-19 1.4989e-20 1.93792e-19
-1.21489e-19 -3.16314e-20 6.18204e-20 1.4892e-19 3.19806e-19
8.28381e-20 8.68968e-20 -4.65792e-20 3.30496e-19 4.9642e-20
-9.58733e-20 6.83335e-20 7.72576e-20 -1.07152e-19 6.36621e-20
In [19]:
Nodes(Primal,cellunit)
Out[19]:
Nodes{Primal,100,100} data
Printing in grid orientation (lower left is (1,1))
99×99 Array{Float64,2}:
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 … 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 … 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 … 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
⋮ ⋮ ⋱ ⋮
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 … 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 … 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
In [20]:
w = Fields.Nodes{Fields.Dual, 5, 4}()
w .= reshape(1:20, 5, 4)
Ww = Fields.cellshift(w)
Out[20]:
Edges{Dual,5,4} data
u (in grid orientation)
4×4 Array{Float64,2}:
0.0 0.0 0.0 0.0
11.5 12.5 13.5 14.5
6.5 7.5 8.5 9.5
0.0 0.0 0.0 0.0
v (in grid orientation)
3×5 Array{Float64,2}:
0.0 14.5 15.5 16.5 0.0
0.0 9.5 10.5 11.5 0.0
0.0 4.5 5.5 6.5 0.0
In [21]:
s = Fields.Nodes{Fields.Dual, 5, 4}()
s .= rand(5, 4)
Fields.divergence(Fields.curl(s))
Out[21]:
Nodes{Primal,5,4} data
Printing in grid orientation (lower left is (1,1))
3×4 Array{Float64,2}:
0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0
In [22]:
v = Fields.Nodes(Fields.Dual,(12,12))
v[4,5] = 1.0
v
Out[22]:
Nodes{Dual,12,12} data
Printing in grid orientation (lower left is (1,1))
12×12 Array{Float64,2}:
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
In [23]:
L = plan_laplacian(nx,ny;with_inverse=true)
Out[23]:
Discrete Laplacian (and inverse) on a (nx = 100, ny = 100) grid with spacing 1.0
In [24]:
faceones = deepcopy(facezero)
fill!(faceones,1.0)
Out[24]:
Edges{Primal,100,100} data
u (in grid orientation)
99×100 Array{Float64,2}:
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 … 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 … 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 … 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
⋮ ⋮ ⋱ ⋮
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 … 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 … 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
v (in grid orientation)
100×99 Array{Float64,2}:
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 … 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 … 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 … 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
⋮ ⋮ ⋱ ⋮
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 … 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 … 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
In [25]:
L*(L\cellunit)
Out[25]:
Nodes{Dual,100,100} data
Printing in grid orientation (lower left is (1,1))
100×100 Array{Float64,2}:
0.0 0.0 0.0 … 0.0 0.0 0.0
0.0 -1.11022e-16 -2.22045e-16 -5.55112e-16 -4.44089e-16 0.0
0.0 -8.88178e-16 -3.33067e-16 -9.99201e-16 1.11022e-15 0.0
0.0 9.99201e-16 5.55112e-16 0.0 -5.55112e-16 0.0
0.0 -1.44329e-15 -1.33227e-15 1.22125e-15 -4.44089e-16 0.0
0.0 2.44249e-15 1.66533e-15 … -2.22045e-16 1.44329e-15 0.0
0.0 -1.9984e-15 -1.88738e-15 6.66134e-16 -1.66533e-15 0.0
0.0 1.11022e-16 -3.33067e-16 -6.66134e-16 -1.11022e-16 0.0
0.0 1.88738e-15 9.99201e-16 1.11022e-15 1.66533e-15 0.0
0.0 -1.33227e-15 7.77156e-16 -1.11022e-15 -4.44089e-16 0.0
0.0 -1.11022e-16 -5.55112e-16 … -9.99201e-16 2.22045e-16 0.0
0.0 2.22045e-16 3.33067e-16 -7.77156e-16 1.44329e-15 0.0
0.0 0.0 4.44089e-16 5.55112e-16 -1.33227e-15 0.0
⋮ ⋱
0.0 0.0 8.88178e-16 -2.22045e-16 -1.44329e-15 0.0
0.0 0.0 -3.33067e-16 -6.66134e-16 0.0 0.0
0.0 6.66134e-16 6.66134e-16 … -4.44089e-16 1.77636e-15 0.0
0.0 -1.55431e-15 0.0 -1.33227e-15 -1.55431e-15 0.0
0.0 1.88738e-15 8.88178e-16 3.33067e-16 2.33147e-15 0.0
0.0 1.11022e-16 0.0 -4.44089e-16 -3.33067e-16 0.0
0.0 -1.9984e-15 -3.33067e-16 4.44089e-16 -1.11022e-15 0.0
0.0 2.10942e-15 7.77156e-16 … -6.66134e-16 2.44249e-15 0.0
0.0 -1.9984e-15 -9.99201e-16 -4.44089e-16 -5.55112e-16 0.0
0.0 1.22125e-15 -2.22045e-16 7.77156e-16 -1.22125e-15 0.0
0.0 6.66134e-16 5.55112e-16 1.11022e-16 2.22045e-15 0.0
0.0 0.0 0.0 0.0 0.0 0.0
In [26]:
w = Fields.Nodes(Fields.Primal,v)
w[4,5] = 1.0
Fields.grad(w)
Out[26]:
Edges{Primal,12,12} data
u (in grid orientation)
11×12 Array{Float64,2}:
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 1.0 -1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
v (in grid orientation)
12×11 Array{Float64,2}:
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 -1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
In [27]:
q = Fields.Edges(Fields.Dual,v)
q.u[4,5] = 1.0
dq = Fields.grad(q)
dq.dudy
Out[27]:
Nodes{Primal,12,12} data
Printing in grid orientation (lower left is (1,1))
11×11 Array{Float64,2}:
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 -1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
In [ ]:
Content source: jdeldre/whirl2d.jl
Similar notebooks: